import axios from 'axios'
import localStorage from '../utils/MyLocalStorage'
import ElementUI from "element-ui";
import router from "../router";
import api from '../api'

// 创建axios实例
const request = axios.create({
  // axios中请求配置有baseURL选项，表示请求URL公共部分
  // baseURL: process.env.VUE_APP_BASE_API,
  baseURL:api.courseUrl,
  // 超时
  timeout: 10000
})
request.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'

// 自动给同一个vue项目的所有请求添加请求头
//设置axios请求头加入token
request.interceptors.request.use(request => {
    // console.log("request.data  " +request.url)
    //如果登录路由不加token
    // if (request.push === 'course/login') {
    //   console.log("登录中...")
    // } else {
    if (localStorage.get('token')) {
      //在请求头加入token，名字要和后端接收请求头的token名字一样
      // request.headers.token=localStorage.getItem('token');
      request.headers.token=localStorage.get('token')
    }
    // }
    // console.log("params "+request.params)
    // console.log("headers "+request.headers)
    return request;
  },
  error => {
    return Promise.reject(error);
  });

//=============================
//响应回来token是否过期
request.interceptors.response.use(response => {
    // console.log("response use ...")
    let code = response.data.code;
    console.log('code '+code)
    // console.log('响应回来：'+code)
    if(code != 200 && code != 403){
      // 显示警告的操作
      ElementUI.Message({
        message: response.data.msg,
        type: 'warning'
      });
      console.log("response.data.msg" +response.data.msg);
      console.log("code "+code);
    }
    if (response.data.code == 1000) {
      //清除token
      localStorage.remove('token');
      localStorage.remove('user')
      router.push({name: 'Login'});
    }
    //和后端token失效返回码约定 403
    if (response.data.code == 403) {
      // 引用elementui message提示框
      ElementUI.Message({
        message: '身份已失效',
        type: 'err'
      });
      //清除token
      localStorage.removeItem('token');
      //跳转
      router.push({name: 'Login'});
    } else {
      return response.data
    }
  },
  error => {
    return Promise.reject(error);
  })


/*网络请求部分*/

/*
 *  get请求
 *  url:请求地址
 *  params:参数
 * */
// export function get(url, params = {}) {
//   return new Promise((resolve, reject) => {
//     request({
//       url: url,
//       method: 'get',
//       params: params
//     }).then(response => {
//       // console.log(JSON.stringify('data0 '+response));
//       resolve(response);
//     }).catch(error => {
//       reject(error);
//     });
//   });
// }
//
// /*
//  *  post请求
//  *  url:请求地址
//  *  params:参数
//  * */
// export function post(url, params = {}) {
//   return new Promise((resolve, reject) => {
//     request({
//       url: url,
//       method: 'post',
//       data: params
//     }).then(response => {
//       resolve(response);
//     }).catch(error => {
//       reject(error);
//     });
//   });
// }

export default request
// export default {
//   get,
//   post
// }
